package cn.terminus.web.customer.contractinfo.form;

import cn.terminus.client.customer.contractfile.param.ContractFileNewParam;
import cn.terminus.client.customer.contractsellbystagesinfo.param.ContractSellByStagesInfoNewParam;
import cn.terminus.client.customer.contractsellclauseinfo.param.ContractSellClauseInfoNewParam;
import cn.terminus.client.customer.contractselldefylatedeliveryinfo.param.ContractSellDefyLateDeliveryInfoNewParam;
import cn.terminus.client.customer.contractselldefyloaninfo.param.ContractSellDefyLoanInfoNewParam;
import cn.terminus.client.customer.contractselldefyoverdueapplicationinfo.param.ContractSellDefyOverdueApplicationInfoNewParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoNewParam;
import cn.terminus.client.customer.custominfo.param.AddCustomInfoParam;
import cn.terminus.client.customer.custompurposeroom.param.CustomPurposeRoomNewParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * @author leslie.zhang
 * @date 2021/7/21 11:39 上午
 */
@Data
public class SellContractNewForm {
    /**
     * 合同编号
     */
    @ApiModelProperty(name = "code", value = "合同编号", required = true)
    private String code;

    /**
     * 合同签订日期
     */
    @ApiModelProperty(name = "signTime", value = "合同签订日期", required = true)
    private LocalDate signTime;

    /**
     * 合同开始时间
     */
    @ApiModelProperty(name = "effectiveBeginTime", value = "合同开始时间", required = true)
    private LocalDate effectiveBeginTime;


    /**
     * 计算精度code
     */
    @ApiModelProperty(name = "precisionCode", value = "计算精度code", required = true)
    private String precisionCode;

    /**
     * 合同标签code,号分割
     */
    @ApiModelProperty(name = "labelCode", value = "合同标签code,号分割", required = true)
    private String labelCode;

    /**
     * 租客id
     */
    @ApiModelProperty(name = "customerId", value = "租客id", required = true)
    private Long customerId;

    @ApiModelProperty(name = "property_fee", value = "物业费用", required = true)
    private BigDecimal propertyFee;

    @ApiModelProperty(name = "propertyFeeCode", value = "物业费用code", required = true)
    private String propertyFeeCode;

    /**
     * 交付日期
     */
    @ApiModelProperty(name = "deliverTime", value = "交付日期", required = false)
    private LocalDate deliverTime;

    /**
     * 办证日期
     */
    @ApiModelProperty(name = "certificateNumber", value = "办证日期", required = false)
    private Integer certificateNumber;

    /**
     * 办证日期单位code 工作日/自然日
     */
    @ApiModelProperty(name = "certificateUnitCode", value = "办证日期单位code 工作日/自然日", required = false)
    private String certificateUnitCode;

    /**
     * 违约金
     */
    @ApiModelProperty(name = "violation", value = "违约金", required = true)
    private BigDecimal violation;

    /**
     * 违约金单位编码
     */
    @ApiModelProperty(name = "violationUnitCode", value = "违约金单位编码", required = true)
    private String violationUnitCode;

    @ApiModelProperty(name = "customInfoForm", value = "客户信息", required = true)
    private AddCustomInfoParam customInfoParam;

    @ApiModelProperty(name = "purposeRoomNewList", value = "房源", required = true)
    private List<CustomPurposeRoomNewParam> purposeRoomNewList;

    @ApiModelProperty(name = "sellClauseInfoNewForm", value = "条款信息", required = true)
    private ContractSellClauseInfoNewParam sellClauseInfoNewParam;

    @ApiModelProperty(name = "sellByStagesInfoNewFormList", value = "分期付款信息", required = true)
    private List<ContractSellByStagesInfoNewParam> sellByStagesInfoNewParamList;

    @ApiModelProperty(name = "defyPaymentOverdueInfoNewForm", value = "付款逾期", required = true)
    private ContractSellDefyPaymentOverdueInfoNewParam defyPaymentOverdueInfoNewParam;

    @ApiModelProperty(name = "defyLoanInfoNewForm", value = "贷款办理", required = true)
    private ContractSellDefyLoanInfoNewParam defyLoanInfoNewParam;

    @ApiModelProperty(name = "defyLoanInfoNewForm", value = "交付逾期", required = true)
    private ContractSellDefyLateDeliveryInfoNewParam defyLateDeliveryInfoNewParam;

    @ApiModelProperty(name = "defyLoanInfoNewForm", value = "办证逾期", required = true)
    private ContractSellDefyOverdueApplicationInfoNewParam defyOverdueApplicationInfoNewParam;

    @ApiModelProperty(name = "fileNewFormList", value = "文件", required = true)
    private List<ContractFileNewParam> fileNewParamList;
}
